package cl.zeke.cursos.jsf2spring3jpa2.negocio.services;

import cl.zeke.cursos.jsf2spring3jpa2.dao.Ejercicio4PersonaDao;
import cl.zeke.cursos.jsf2spring3jpa2.negocio.entities.Persona;
import cl.zeke.cursos.jsf2spring3jpa2.negocio.exceptions.LogicaNegocioException;
import cl.zeke.cursos.jsf2spring3jpa2.util.Ejercicio4Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Service;

@Service
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
public class Ejercicio4Service {
    
    private static Logger log = LoggerFactory.getLogger(Ejercicio4Service.class);
    
    @Autowired
    private Ejercicio4Util ejercicio4Util;
    
    @Autowired
    private Ejercicio4PersonaDao personaDao;
    
    
    public Persona buscarPersonaPorRut(Integer rut) {
        return personaDao.traerPorRut(rut);
    }
        
    public void guardarPersona(Persona p) throws LogicaNegocioException {
        ejercicio4Util.generarLogInicio();
        if(p.getNombre().toUpperCase().trim().equals("ZEKE")) {
            throw new LogicaNegocioException("Zeke es un nombre reservado");
        }
        log.debug("Se guardo exitosamente");
        ejercicio4Util.generarLogFin();
    }
    
}
